#include <stdio.h>


// //共用空间
// union Un
// {
//     int a;
//     char c;
// };
// int main()
// {
//     union Un u;
//     printf("%d\n",sizeof(u));

//     printf("%p\n",&u);
//     printf("%p\n",&(u.a));
//     printf("%p\n",&(u.c));
//     return 0;
// }


// //判断系统是大端还是小端存储
// int check_sys()
// {
//     union          //只使用一次 所以可以省略命名
//     {
//         char c;
//         int i;
//     }u;
//     u.i= 1;
//     return u.c;
// }
// int main()
// {
//     int ret = check_sys();
//     //int i = 1  00 00 00 01
//     //01 00 00 00 小端
//     //00 00 00 01 大端
//     if(ret == 1)
//         printf("小端存储\n");
//     else 
//         printf("大端存储\n");
//     return 0;
// }


//联合也是要对齐的
union Un
{
    char arr[5];//对齐单位为1个字节 总大小为5
    int i;//对齐单位为4个字节 
    //所以以4为对齐单位 4 < 5 < 8 故联合大小为8
};
int main()
{
    union Un u;
    printf("%d\n",sizeof(u));
    return 0;
}